home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / recent / warpup1.lha / WarpUP-WarpOS / Source / multitasking.p next >
Text File  |  1998-03-01  |  7KB  |  316 lines

  1.         incdir  include:
  2.         incdir  lvo:
  3.  
  4.         include powerpc/ppcmacros.i
  5.         include powerpc/powerpc.i
  6.         include powerpc/tasksppc.i
  7.         include dos/dos.i
  8.  
  9.         include powerpc_lib.i
  10.         include exec_lib.i
  11.         include dos_lib.i
  12.  
  13.         xref    _SysBase
  14.         xref    _DOSBase
  15.         xref    _PowerPCBase
  16.         xref    _LinkerDB
  17.  
  18.         smalldata
  19.         executable
  20.         escapestr
  21.         version 8
  22.  
  23. start
  24.         prolog  1024
  25.         pushgpr r30/r31
  26.         la      r31,TaskPtrs-4
  27.         la      r4,Task1
  28.         CALLPOWERPC     CreateTaskPPC
  29.         stwu    r3,4(r31)
  30.         la      r4,Task2
  31.         CALLPOWERPC     CreateTaskPPC
  32.         stwu    r3,4(r31)
  33.         la      r4,Task3
  34.         CALLPOWERPC     CreateTaskPPC
  35.         stwu    r3,4(r31)
  36.         la      r4,Task4
  37.         CALLPOWERPC     CreateTaskPPC
  38.         stwu    r3,4(r31)
  39.         la      r4,Task5
  40.         CALLPOWERPC     CreateTaskPPC
  41.         stwu    r3,4(r31)
  42.         la      r4,Task6
  43.         CALLPOWERPC     CreateTaskPPC
  44.         stwu    r3,4(r31)
  45.         la      r4,Task7
  46.         CALLPOWERPC     CreateTaskPPC
  47.         stwu    r3,4(r31)
  48.         la      r4,Task8
  49.         CALLPOWERPC     CreateTaskPPC
  50.         stwu    r3,4(r31)
  51.         la      r4,Task9
  52.         CALLPOWERPC     CreateTaskPPC
  53.         stwu    r3,4(r31)
  54.         la      _d1,welcome
  55.         la      _d2,Args
  56.         RUN68K_XL       _DOSBase,VPrintf
  57.         liw     r4,SIGBREAKF_CTRL_C
  58.         CALLPOWERPC     WaitPPC
  59.         la      _d1,sendsigs
  60.         la      _d2,Args
  61.         RUN68K_XL       _DOSBase,VPrintf
  62.         la      r31,TaskPtrs-4
  63.         li      r30,9
  64. .loop
  65.         lwzu    r4,4(r31)
  66.         liw     r5,$00010000
  67.         CALLPOWERPC     SignalPPC
  68.         subic.  r30,r30,1
  69.         bne     .loop
  70.         liw     _d1,100
  71.         RUN68K  _DOSBase,Delay
  72.         popgpr
  73.         epilog
  74.  
  75. T1_Code
  76.         prolog  1024
  77.         la      r3,T1_Win
  78.         la      r4,T1_Text
  79.         bl      Loop
  80.         epilog
  81. T2_Code
  82.         prolog  1024
  83.         la      r3,T2_Win
  84.         la      r4,T2_Text
  85.         bl      Loop
  86.         epilog
  87. T3_Code
  88.         prolog  1024
  89.         la      r3,T3_Win
  90.         la      r4,T3_Text
  91.         bl      Loop
  92.         epilog
  93. T4_Code
  94.         prolog  1024
  95.         la      r3,T4_Win
  96.         la      r4,T4_Text
  97.         bl      Loop
  98.         epilog
  99. T5_Code
  100.         prolog  1024
  101.         la      r3,T5_Win
  102.         la      r4,T5_Text
  103.         bl      Loop
  104.         epilog
  105. T6_Code
  106.         prolog  1024
  107.         la      r3,T6_Win
  108.         la      r4,T6_Text
  109.         bl      Loop
  110.         epilog
  111. T7_Code
  112.         prolog  1024
  113.         la      r3,T7_Win
  114.         la      r4,T7_Text
  115.         bl      Loop
  116.         epilog
  117. T8_Code
  118.         prolog  1024
  119.         la      r3,T8_Win
  120.         la      r4,T8_Text
  121.         bl      Loop
  122.         epilog
  123. T9_Code
  124.         prolog  1024
  125.         la      r3,T9_Win
  126.         la      r4,T9_Text
  127.         bl      Loop
  128.         epilog
  129.  
  130. Loop
  131.         pushlr
  132.         pushgpr r27-r31
  133.         mr      r27,r3
  134.         mr      r28,r4
  135.         li      r4,16
  136.         CALLPOWERPC     AllocSignalPPC
  137.         mr      r29,r3
  138.  
  139.  
  140.         li      r4,1
  141.         slw     r30,r4,r3
  142.         mr      _d1,r27
  143.         liw     _d2,MODE_NEWFILE
  144.         RUN68K_XL       _DOSBase,Open
  145.         mr      r31,_d0
  146. .loop
  147.         mr      _d1,r31
  148.         mr      _d2,r28
  149.         la      _d3,Args
  150.         RUN68K_XL       _DOSBase,VFPrintf
  151.         li      r4,0
  152.         li      r5,0
  153.         CALLPOWERPC     SetSignalPPC
  154.         and.    r3,r3,r30
  155.         beq     .loop
  156.         mr      _d1,r31
  157.  
  158.  
  159.         la      _d2,sigsrec
  160.         la      _d3,Args
  161.         RUN68K_XL       _DOSBase,VFPrintf
  162.         mr      r4,r29
  163.         CALLPOWERPC     FreeSignalPPC
  164.         popgpr
  165.         epilog
  166.  
  167.         section data
  168. welcome         dc.b    "Welcome to the WarpOS multitasking demonstration\n"
  169.         dc.b    "Press CTRL-C to quit (The PPC will wait for CTRL_C itself!)\n",0
  170. sendsigs        dc.b    "Sending signals to all child tasks\n",0
  171. sigsrec         dc.b    "Signal received\n"
  172.         dc.b    "Removing task\n",0
  173.         even
  174.  
  175. Task1           dc.l    TASKATTR_CODE
  176.         dc.l    T1_Code
  177.         dc.l    TASKATTR_NAME
  178.         dc.l    T1_Name
  179.         dc.l    TASKATTR_R2
  180.         dc.l    _LinkerDB
  181.         dc.l    TASKATTR_MOTHERPRI
  182.         dc.l    -1
  183.         dc.l    0
  184. T1_Win          dc.b    "CON:0/0/266/200/PPC task 'DemoTask1'/AUTO/CLOSE/WAIT/INACTIVE",0
  185. T1_Text         dc.b    "PPC task 'DemoTask1' active\n"
  186.         dc.b    "Waiting for a signal\n",0
  187. T1_Name         dc.b    "DemoTask1",0
  188.         even
  189.  
  190. Task2           dc.l    TASKATTR_CODE
  191.         dc.l    T2_Code
  192.         dc.l    TASKATTR_NAME
  193.         dc.l    T2_Name
  194.         dc.l    TASKATTR_R2
  195.         dc.l    _LinkerDB
  196.         dc.l    TASKATTR_MOTHERPRI
  197.         dc.l    -1
  198.         dc.l    0
  199. T2_Win          dc.b    "CON:266/0/266/200/PPC task 'DemoTask2'/AUTO/CLOSE/WAIT/INACTIVE",0
  200. T2_Text         dc.b    "PPC task 'DemoTask2' active\n"
  201.         dc.b    "Waiting for a signal\n",0
  202. T2_Name         dc.b    "DemoTask2",0
  203.         even
  204.  
  205. Task3           dc.l    TASKATTR_CODE
  206.         dc.l    T3_Code
  207.         dc.l    TASKATTR_NAME
  208.         dc.l    T3_Name
  209.         dc.l    TASKATTR_R2
  210.         dc.l    _LinkerDB
  211.         dc.l    TASKATTR_MOTHERPRI
  212.         dc.l    -1
  213.         dc.l    0
  214. T3_Win          dc.b    "CON:532/0/266/200/PPC task 'DemoTask3'/AUTO/CLOSE/WAIT/INACTIVE",0
  215. T3_Text         dc.b    "PPC task 'DemoTask3' active\n"
  216.         dc.b    "Waiting for a signal\n",0
  217. T3_Name         dc.b    "DemoTask3",0
  218.         even
  219.  
  220. Task4           dc.l    TASKATTR_CODE
  221.         dc.l    T4_Code
  222.         dc.l    TASKATTR_NAME
  223.         dc.l    T4_Name
  224.         dc.l    TASKATTR_R2
  225.         dc.l    _LinkerDB
  226.         dc.l    TASKATTR_MOTHERPRI
  227.         dc.l    -1
  228.         dc.l    0
  229. T4_Win          dc.b    "CON:0/200/266/200/PPC task 'DemoTask4'/AUTO/CLOSE/WAIT/INACTIVE",0
  230. T4_Text         dc.b    "PPC task 'DemoTask4' active\n"
  231.         dc.b    "Waiting for a signal\n",0
  232. T4_Name         dc.b    "DemoTask4",0
  233.         even
  234.  
  235. Task5           dc.l    TASKATTR_CODE
  236.         dc.l    T5_Code
  237.         dc.l    TASKATTR_NAME
  238.         dc.l    T5_Name
  239.         dc.l    TASKATTR_R2
  240.         dc.l    _LinkerDB
  241.         dc.l    TASKATTR_MOTHERPRI
  242.         dc.l    -1
  243.         dc.l    0
  244. T5_Win          dc.b    "CON:266/200/266/200/PPC task 'DemoTask5'/AUTO/CLOSE/WAIT/INACTIVE",0
  245. T5_Text         dc.b    "PPC task 'DemoTask5' active\n"
  246.         dc.b    "Waiting for a signal\n",0
  247. T5_Name         dc.b    "DemoTask5",0
  248.         even
  249.  
  250. Task6           dc.l    TASKATTR_CODE
  251.         dc.l    T6_Code
  252.         dc.l    TASKATTR_NAME
  253.         dc.l    T6_Name
  254.         dc.l    TASKATTR_R2
  255.         dc.l    _LinkerDB
  256.         dc.l    TASKATTR_MOTHERPRI
  257.         dc.l    -1
  258.         dc.l    0
  259. T6_Win          dc.b    "CON:532/200/266/200/PPC task 'DemoTask6'/AUTO/CLOSE/WAIT/INACTIVE",0
  260. T6_Text         dc.b    "PPC task 'DemoTask6' active\n"
  261.         dc.b    "Waiting for a signal\n",0
  262. T6_Name         dc.b    "DemoTask6",0
  263.         even
  264.  
  265. Task7           dc.l    TASKATTR_CODE
  266.         dc.l    T7_Code
  267.         dc.l    TASKATTR_NAME
  268.         dc.l    T7_Name
  269.         dc.l    TASKATTR_R2
  270.         dc.l    _LinkerDB
  271.         dc.l    TASKATTR_MOTHERPRI
  272.         dc.l    -1
  273.         dc.l    0
  274. T7_Win          dc.b    "CON:0/400/266/200/PPC task 'DemoTask7'/AUTO/CLOSE/WAIT/INACTIVE",0
  275. T7_Text         dc.b    "PPC task 'DemoTask7' active\n"
  276.         dc.b    "Waiting for a signal\n",0
  277. T7_Name         dc.b    "DemoTask7",0
  278.         even
  279.  
  280. Task8           dc.l    TASKATTR_CODE
  281.         dc.l    T8_Code
  282.         dc.l    TASKATTR_NAME
  283.         dc.l    T8_Name
  284.         dc.l    TASKATTR_R2
  285.         dc.l    _LinkerDB
  286.         dc.l    TASKATTR_MOTHERPRI
  287.         dc.l    -1
  288.         dc.l    0
  289. T8_Win          dc.b    "CON:266/400/266/200/PPC task 'DemoTask8'/AUTO/CLOSE/WAIT/INACTIVE",0
  290. T8_Text         dc.b    "PPC task 'DemoTask8' active\n"
  291.         dc.b    "Waiting for a signal\n",0
  292. T8_Name         dc.b    "DemoTask8",0
  293.         even
  294.  
  295. Task9           dc.l    TASKATTR_CODE
  296.         dc.l    T9_Code
  297.         dc.l    TASKATTR_NAME
  298.         dc.l    T9_Name
  299.         dc.l    TASKATTR_R2
  300.         dc.l    _LinkerDB
  301.         dc.l    TASKATTR_MOTHERPRI
  302.         dc.l    -1
  303.         dc.l    0
  304. T9_Win          dc.b    "CON:532/400/266/200/PPC task 'DemoTask10'/AUTO/CLOSE/WAIT/INACTIVE",0
  305. T9_Text         dc.b    "PPC task 'DemoTask9' active\n"
  306.         dc.b    "Waiting for a signal\n",0
  307. T9_Name         dc.b    "DemoTask9",0
  308.         even
  309.  
  310.         section bss
  311.         ds.b    32
  312. Args            ds.l    1
  313. TaskPtrs        dsb.l   9
  314.         ds.b    32
  315.         even
  316.